SPEED	EQU	0
MUS_DAT	EQU	25000
	ORG	#5B00
;
INIT
	LD	HL,MUS_DAT
	DI
	PUSH	HL
	LD	HL,#8000
	LD	DE,#8001
	LD	BC,#01FF
	LD	(HL),L
	LDIR
	POP	HL
;
	LD	A,(HL)
	LD	(SPEED),A
	LD	(FORDATA),HL
	INC	HL
	CALL	ADDER		;HL-ST
	LD	A,(DE)		;(HL)-LEN  => DE-ADR
	INC	DE
	INC	A
	LD	(LENPOS),A	;LENGTH	OF POSITIONS
	LD	(ADRPOS),DE	;ADR POSITIONS
	INC	HL
	INC	HL
	CALL	ADDER
TABLE
	EX	DE,HL
	PUSH	HL
	INC	HL
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	LD	HL,(FORDATA)
	ADD	HL,DE
	LD	(ST_PAT),HL
	LD	HL,#8200
	SBC	HL,DE
	LD	(FORDATA),HL
	POP	HL
	LD	IX,#8000
;
LOOP3
	LD	A,(HL)
	CP	#FF
	INC	HL
	JR	Z,ENDTAB
;
;
	CALL	ADDER
	LD	(IX),E
	LD	(IX+1),D
	CALL	ADDER
	LD	(IX+2),E
	LD	(IX+3),D
	CALL	ADDER
	LD	(IX+4),E
	LD	(IX+5),D
	LD	BC,6
	ADD	IX,BC
	JR	LOOP3
;
ENDTAB
	LD	HL,0
ST_PAT	EQU	$-2
LOO
	LD	A,(HL)
	CP	#FF
	INC	HL
	JR	NZ,LOO
	INC	HL
	LD	A,(HL)
	AND	A
	JR	Z,COPYMUS
	JR	LOO
COPYMUS
	LD	DE,(ST_PAT)
	SBC	HL,DE
	EX	DE,HL
	LD	B,D
	LD	C,E
	DEC	BC
	LD	DE,#8200
	LDIR
;				----
	LD	DE,#9180	;TABLE POSITIONS
	LD	B,0
LENPOS	EQU	$-1
	LD	HL,0
ADRPOS	EQU	$-2
LOOP2
	LD	A,(HL)
	DEC	A
	LD	(DE),A
	INC	HL
	INC	HL
	INC	DE
	DJNZ	LOOP2
	LD	A,#FF
	LD	(DE),A
	RET
;
ADDER
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	EX	DE,HL
	LD	BC,0
FORDATA	EQU	$-2
	ADD	HL,BC
	EX	DE,HL
	RET
;
EOF
